package view;

import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.LinkedList;
import javax.swing.JPanel;

import controller.MainFrame;

import model.*;

public class View {
	Game game;
	public JPanel viewpanel;
	LinkedList<Paintable> components;
	
	public View(Game g, JPanel vp){
		game=g;
		viewpanel=vp;
        components = new LinkedList<Paintable>();
	}
	
	
	/*Ez a metódus végzi a felület tényleges
	újrarajzolását. Az összes tartalmazott objektum paint() metódusát meghívja, megfelelő
	sorrendben és időben.*/
	public void paintComponent(Graphics g){
		
		ArrayList<Paintable> lista = new ArrayList<Paintable>();
		for (Paintable pe:components){
			
			if (!pe.alive()){
				lista.add(pe);
			}
		}
		components.removeAll(lista);
		for (Paintable pe:components){
			
			pe.paint(g);
		}
		
	}
	
	
	//összekapcsol egy modellbeli kishangyát a view rétegbeli „kishangyamegjelenítővel”.
	public void createLittleAntView(LittleAnt la){
		LittleAntView law= new LittleAntView(la);
		components.add(law);

	}
	public void createBigAntView(BigAnt la){
		BigAntView law= new BigAntView(la);
		components.add(law);

	}
	
	//összekapcsol egy modellbeli hangyaszagot a view rétegbeli „hangyaszagmegjelenitovel”.
	public void createAntOdorView(AntOdor ao){
		AntOdorView aow= new AntOdorView(ao);
		components.add(aow);
	}
	
	//összekapcsol egy modellbeli kajat a view rétegbeli „kajamegjelenitovel”.
	public void createFoodView(Food f){
		FoodView fw= new FoodView(f);
		components.add(fw);
	}
	
	//összekapcsol egy modellbeli hangyabolyt a view rétegbeli „hangyabolymegjelenitovel”.
	public void createAntHillView(AntHill ah){
		AntHillView ahw= new AntHillView(ah);
		components.add(ahw);
	}
	
	//összekapcsol egy modellbeli hangyalesot a view rétegbeli „hangyalesomegjelenitovel”.
	public void createAntLionView(AntLion al){
		AntLionView alw= new AntLionView(al);
		components.add(alw);
	}
	
	//összekapcsol egy modellbeli tavat a view rétegbeli „tomegjelenitovel”.
	public void createLakeView(Lake l){
		LakeView lw= new LakeView(l);
		components.add(lw);
	}
	
	//összekapcsol egy modellbeli kovet a view rétegbeli „komegjelenitovel”.
	public void createRockView(Rock r){
		RockView rw= new RockView(r);
		components.add(rw);
	}

	//összekapcsol egy modellbeli sunt a view rétegbeli „sunmegjelenitovel”.
	public void createHedgeHogView(HedgeHog h){
		HedgehogView hw= new HedgehogView(h);
		components.add(hw);
	}
	
	//összekapcsol egy modellbeli sprayt a view rétegbeli „spraymegjelenitovel”.
	public void createAntKillerSprayView(AntKillerSpray s){
		AntKillerSprayView sw= new AntKillerSprayView(s);
		components.add(sw);
	}
	//összekapcsol egy modellbeli sprayt a view rétegbeli „spraymegjelenitovel”.
	public void createAntOdorKillerSprayView(AntOdorKillerSpray s){
		AntOdorKillerSprayView sw= new AntOdorKillerSprayView(s);
		components.add(sw);
	}

	

}
